// 函数：加载用户列表
function loadUserList() {
    $.ajax({
        type: "GET",
        url: "/userServlet",
        success: function(response) {
            // 假设 response 是一个用户列表数组
            var userList = response.data;
            console.log(userList)
            var tbody = $("table tbody");
            tbody.empty(); // 清空表格内容
            // 遍历用户列表并添加到表格中
            $.each(userList, function(index, user) {
                var gender = user.gender == 0 ? '男性' : '女性';
                var role = user.role == 0 ? '用户' : '管理员';
                var row = '<tr>' +
                    '<td>' + user.id + '</td>' +
                    '<td>' + user.username + '</td>' +
                    '<td>' + user.nickname + '</td>' +
                    '<td>' + user.bio + '</td>' +
                    '<td>' + gender + '</td>' +
                    '<td>' + user.phone + '</td>' +
                    '<td>' + user.email + '</td>' +
                    '<td>' + role + '</td>' +
                    '<td><img src="' + user.avatarUrl + '" alt="Avatar" class="nav-avatar"></td>' +
                    '<td>' + formatDate(user.updatedAt) + '</td>' +
                    '<td><a href="#" class="btn btn-danger delete-user" data-id="' + user.id + '">删除</a></td>' +
                    '</tr>';
                tbody.append(row);
            });
        },
        error: function(xhr, status, error) {
            console.error("异常", error);
            alert("获取用户列表失败");
        }
    });
}

//渲染用户方法
// 渲染用户列表
function renderUserList(userList) {
    var tbody = $("table tbody");
    tbody.empty(); // 清空表格内容
    $.each(userList, function(index, user) {
        var gender = user.gender == 0 ? '男性' : '女性';
        var role = user.role == 0 ? '用户' : '管理员';
        var row = '<tr>' +
            '<td>' + user.id + '</td>' +
            '<td>' + user.username + '</td>' +
            '<td>' + user.nickname + '</td>' +
            '<td>' + user.bio + '</td>' +
            '<td>' + gender + '</td>' +
            '<td>' + user.phone + '</td>' +
            '<td>' + user.email + '</td>' +
            '<td>' + role + '</td>' +
            '<td><img src="' + user.avatarUrl + '" alt="Avatar" class="nav-avatar"></td>' +
            '<td>' + formatDate(user.updatedAt) + '</td>' +
            '<td>' +
            '<a href="#" class="btn btn-danger delete-user" data-id="' + user.id + '">删除</a>' +
            '</td>' +
            '</tr>';
        tbody.append(row);
    });
}


// 根据用户名模糊搜索用户
function searchUser(username) {
    var url = "/userServlet?username=" + encodeURIComponent(username);
    $.ajax({
        type: "GET",
        url: url,
        success: function(response) {
            // 处理成功响应，更新页面显示搜索结果
            alert("查询成功！");
            renderUserList(response.data);//渲染用户
        },
        error: function(xhr, status, error) {
            // 处理错误响应
            console.error("查询异常", error);
            alert("搜索用户失败");
        }
    });
}

// 函数：删除用户
function deleteUser(userId) {
    $.ajax({
        type: "DELETE",
        url: "/userServlet?id=" + userId,
        success: function(response) {
            alert("用户删除成功！");
            loadUserList(); // 重新加载用户列表
        },
        error: function(xhr, status, error) {
            console.error("删除异常", error);
            alert("删除用户失败");
        }
    });
}

//加载分类管理数据
function loadCategoryList() {
    $.ajax({
        type: "GET",
        url: "/categoryServlet",
        success: function(response) {
            // 假设 response 是一个用户列表数组
            var categoryList = response.data;
            var tbody = $("table tbody");
            //清空表数据
            tbody.empty();
            $.each(categoryList, function(index, category) {
                var row = '<tr>' +
                    '<td>' + category.id + '</td>' +
                    '<td>' + category.name + '</td>' +
                    '<td>' + category.description + '</td>' +
                    '<td>' +
                    "<a href='#' class='btn btn-primary btn-sm edit-category' data-id='" + category.id + "' data-name='" + category.name + "' data-description='" + category.description + "'>编辑</a>"+
                    '<a href="#"  class="btn btn-danger btn-sm delete-category" data-id="' + category.id + '">删除</a>' +
                    '</td>' +
                    '</tr>';
                tbody.append(row);
            });
        },
        error: function(xhr, status, error) {
            console.error("异常", error);
            alert("获取分类列表失败");
        }
    });
}
//渲染分类列表
function renderCategoryList(categoryList) {
    // 获取表格的 tbody 元素
    var tbody = $("table tbody");

    // 清空表格内容
    tbody.empty();

    // 遍历分类列表，并插入到表格中
    categoryList.forEach(function(category) {
        var row = "<tr>" +
            "<td>" + category.id + "</td>" +
            "<td>" + category.name + "</td>" +
            "<td>" + category.description + "</td>" +
            "<td>" +
            "<a href='#' class='btn btn-danger btn-sm delete-category' data-id='" + category.id + "'>删除</a>" +
            "<a href='#' class='btn btn-primary btn-sm edit-category' data-id='" + category.id + "' data-name='" + category.name + "' data-description='" + category.description + "'>编辑</a>" +
            "</td>" +
            "</tr>";

        // 将行数据添加到表格中
        tbody.append(row);
    });
}



// 根据分类名称查询分类
function searchCategory(categoryName) {
    // 发送 AJAX 请求根据分类名称查询分类
    $.ajax({
        type: "GET",
        url: "/categoryServlet?categoryName=" + categoryName,
        success: function (response) {
            // 在这里刷新分类列表或重新查询并渲染
            alert("分类查询成功");
            // 重新加载分类列表
            renderCategoryList(response.data);
        },
        error: function (xhr, status, error) {
            // 处理失败的回调函数
            console.error("Error:", error);
            alert("分类查询失败");
        }
    });
}
// 打开模态框进行新增或编辑分类操作
function openCategoryModal(operationType, categoryId, categoryName, categoryDescription) {
    console.log(operationType + ";categoryId:" +categoryId)
    // 清空模态框中的输入内容
    $("#categoryIdInput").val(categoryId || "");
    $("#categoryNameInput").val(categoryName || "");
    $("#categoryDescriptionInput").val(categoryDescription || "");

    // 设置模态框的标题和按钮文本
    if (operationType) {
        $("#categoryModalTitle").text("新增分类");
        $("#confirmCategoryButton").text("确认新增");
    } else if (operationType === "edit") {
        $("#categoryModalTitle").text("编辑分类");
        $("#confirmCategoryButton").text("确认编辑");
    }

    // 显示模态框
    $("#addCategoryModal").modal("show");

    // 监听确认按钮点击事件
    $("#confirmAddCategory").off().click(function() {
        var categoryName = $("#categoryNameInput").val().trim();
        var categoryDescription = $("#categoryDescriptionInput").val().trim();

        // 检查输入是否为空
        if (categoryName === "") {
            alert("请输入分类名称");
            return;
        }

        // 构建要发送的数据
        var data = {
            id: categoryId,
            name: categoryName,
            description: categoryDescription

        };
        if (operationType === "add") {
            data = {
                name: categoryName,
                description: categoryDescription
            }
        }
        // 根据操作类型选择发送的请求类型和URL

        var requestType = (operationType === "add") ? "POST" : "PUT";
        // 发送 AJAX 请求进行新增或编辑操作
        $.ajax({
            type: requestType,
            url: "/categoryServlet",
            data: JSON.stringify(data),
            contentType: "application/json",
            success: function(response) {
                // 关闭模态框
                $("#addCategoryModal").modal("hide");
                // 刷新分类列表或者重新查询并渲染
                loadCategoryList();
            },
            error: function(xhr, status, error) {
                console.error(operationType + "分类异常:", error);
                alert(operationType + "分类失败");
            }
        });
    });
}
function deleteCategory(categoryId) {
    console.log("deleteCategory", categoryId)
    $.ajax({
        type: "DELETE",
        url: "/categoryServlet?id=" + categoryId,
        success: function(response) {
            alert("分类删除成功！");
            loadCategoryList(); // 重新加载分类列表
        },
        error: function(xhr, status, error) {
            console.error("删除异常", error);
            alert("删除分类失败");
        }
    });
}


//初始化加载全部帖子。
function loadPostList(page, pageSize, keyword) {
    console.log("keyword", keyword)
    var url = "/postServlet?page=" + page +"&pageSize=" + pageSize;
    if (keyword !== "") {
        url =  url + "&keyword=" +keyword;
    }
    $.ajax({
        type: "GET",
        url: url,
        success: function(response) {
            // 假设 response 是包含分页信息和帖子列表的对象
            var postPageInfo = response.data;
            console.log("postPageInfo", postPageInfo)
            var postList = postPageInfo.list;
            var tbody = $("table tbody");
            // 清空表数据
            tbody.empty();
            $.each(postList, function(index, post) {
                var row = '<tr>' +
                    '<td>' + post.id + '</td>' +
                    '<td>' + post.title + '</td>' +
                    '<td>' + post.content + '</td>' +
                    '<td>' + post.user.username + '</td>' +
                    '<td>' + post.category.name + '</td>' +
                    '<td>' + formatDate(post.createTime) + '</td>' +
                    '<td>' +
                    '<a href="#" class="btn btn-danger btn-sm delete-post" data-id="' + post.id + '">删除</a>' +
                    '</td>' +
                    '</tr>';
                tbody.append(row);
            });

            // 渲染分页
            renderPagination(postPageInfo.pageNum, postPageInfo.pages, keyword);
        },
        error: function(xhr, status, error) {
            console.error("异常", error);
            alert("获取帖子列表失败");
        }
    });
}

//分页渲染
function renderPagination(currentPage, totalPages, keyword) {
    var pagination = $(".pagination");
    // 清空分页
    pagination.empty();
    for (var i = 1; i <= totalPages; i++) {
        var activeClass = currentPage === i ? 'active' : '';
        var pageItem = '<li class="page-item ' + activeClass + '">' +
            '<a class="page-link" href="javascript:void(0);" onclick="loadPostList(' + i + ', 10, \'' + keyword + '\')">' + i + '</a>' +
            '</li>';
        pagination.append(pageItem);
    }
}


//时间转换工具类
function formatDate(timestamp) {
    // 创建一个 Date 对象，传入 Unix 时间戳（毫秒）
    var date = new Date(timestamp);

    // 获取年份、月份和日期
    var year = date.getFullYear();
    var month = ('0' + (date.getMonth() + 1)).slice(-2); // 月份从 0 开始，因此要加 1，然后用 slice(-2) 截取后两位
    var day = ('0' + date.getDate()).slice(-2); // 获取日期，并用 slice(-2) 截取后两位

    // 获取小时、分钟和秒
    var hours = ('0' + date.getHours()).slice(-2); // 获取小时，并用 slice(-2) 截取后两位
    var minutes = ('0' + date.getMinutes()).slice(-2); // 获取分钟，并用 slice(-2) 截取后两位
    var seconds = ('0' + date.getSeconds()).slice(-2); // 获取秒，并用 slice(-2) 截取后两位

    // 拼接日期字符串，格式为 YYYY-MM-DD HH:MM:SS
    var formattedDate = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;

    return formattedDate;
}



